home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #5 / Amiga Plus CD - 2000 - No. 5.iso / Tools / Dev / fpc / utilunits / easyasl.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2000-01-01  |  16.3 KB  |  526 lines

  1. {
  2.     This file is part of the Free Pascal run time library.
  3.  
  4.     A file in Amiga system run time library.
  5.     Copyright (c) 1998-2000 by Nils Sjoholm
  6.     member of the Amiga RTL development team.
  7.  
  8.     See the file COPYING.FPC, included in this distribution,
  9.     for details about the copyright.
  10.  
  11.     This program is distributed in the hope that it will be useful,
  12.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  14.  
  15.  **********************************************************************}
  16.  
  17. {
  18.     An easy way to use asl.library, no need to open asl.library,
  19.     unit asl will open it for you.
  20.     A lot of overlay functions here.:)
  21.     
  22.     One remark, be aware of that GetMultiFiles use linklist for the
  23.     linked list of files, you can't use your own list with ordinary
  24.     nodes.
  25.  
  26.     26 Oct 1998
  27.     nils.sjoholm@mailbox.swipnet.se
  28. }
  29.  
  30. unit easyasl;
  31.  
  32. {$I amigaoverlays.inc}
  33.  
  34. interface
  35.  
  36. uses exec, asl, utility, amigautils,strings, workbench, linklist;
  37.  
  38.  
  39. TYPE
  40.  
  41.     pFPCFontInfo = ^tFPCFontInfo;
  42.  
  43.     tFPCFontInfo = RECORD
  44.     nfi_Name       : String[40];
  45.     nfi_Size       : Word;
  46.     nfi_Style      : Byte;
  47.     nfi_Flags      : Byte;
  48.     nfi_FrontPen   : Byte;
  49.     nfi_BackPen    : Byte;
  50.     nfi_DrawMode   : Byte;
  51.     END;
  52.  
  53.  
  54. FUNCTION GetFileAsl(title : PChar; VAR path, fname : PChar; thepatt : PChar;win : Pointer): Boolean;
  55. FUNCTION GetFontAsl(title : PChar;VAR finfo : tFPCFontInfo; win : Pointer): Boolean;
  56. FUNCTION GetMultiAsl(title : PChar; VAR path : PChar;  VAR Thelist : pList; thepatt : PChar;win : Pointer): Boolean;
  57. FUNCTION GetPathAsl(title : PChar; VAR path : PChar; win : Pointer): Boolean;
  58. FUNCTION SaveFileAsl(title : PChar; VAR path, fname : PChar; win : Pointer): Boolean;
  59.  
  60. {$ifdef amiga_overlays}
  61. FUNCTION GetFileAsl(title : PChar; VAR path, fname : PChar; thepatt : String;win : Pointer): Boolean;
  62. FUNCTION GetFileAsl(title : String; VAR path, fname : PChar; thepatt : PChar;win : Pointer): Boolean;
  63. FUNCTION GetFileAsl(title : String; VAR path, fname : PChar; thepatt : String;win : Pointer): Boolean;
  64. FUNCTION GetFontAsl(title : String;VAR finfo : tFPCFontInfo; win : Pointer): Boolean;
  65. FUNCTION GetMultiAsl(title : PChar; VAR path : PChar;  VAR Thelist : pList; thepatt : String;win : Pointer): Boolean;
  66. FUNCTION GetMultiAsl(title : String; VAR path : PChar;  VAR Thelist : pList; thepatt : PChar;win : Pointer): Boolean;
  67. FUNCTION GetMultiAsl(title : String; VAR path : PChar;  VAR Thelist : pList; thepatt : String;win : Pointer): Boolean;
  68. FUNCTION GetPathAsl(title : String; VAR path : PChar; win : Pointer): Boolean;
  69. FUNCTION SaveFileAsl(title : String; VAR path, fname : PChar; win : Pointer): Boolean;
  70. {$endif}
  71.  
  72. implementation
  73.  
  74. {$ifdef amiga_overlays}
  75.  uses pastoc;
  76. {$endif}
  77.  
  78.  
  79. FUNCTION GetFileAsl(title : PChar; VAR path, fname : PChar; thepatt : PChar;win : Pointer): Boolean;
  80.  
  81. VAR
  82.     fr : pFileRequester;
  83.     result : Boolean;
  84.     mytags : ARRAY[0..7] OF tTagItem;
  85.  
  86. BEGIN
  87.     result := false;
  88.     IF strlen(fname) >0 THEN begin
  89.         mytags[0].ti_Tag  := ASLFR_InitialFile;
  90.         mytags[0].ti_Data := Longint(fname);
  91.     END ELSE begin
  92.         mytags[0].ti_Tag := TAG_IGNORE;
  93.     END;
  94.     IF (strlen(path) > 0) and (FileType(path) = 2) THEN begin
  95.         mytags[1].ti_Tag  := ASLFR_InitialDrawer;
  96.         mytags[1].ti_Data := Longint(path);
  97.     END ELSE begin
  98.         mytags[1].ti_Tag  := ASLFR_InitialDrawer;
  99.         mytags[1].ti_Data := Longint(pas2c('Sys:'));
  100.     END;
  101.     IF win <> nil THEN begin
  102.         mytags[2].ti_Tag  := ASLFR_Window;
  103.         mytags[2].ti_Data := Longint(win);
  104.     END ELSE begin
  105.         mytags[2].ti_Tag  := TAG_IGNORE;
  106.     END;
  107.     IF win <> nil THEN begin
  108.         mytags[3].ti_Tag  := ASLFR_SleepWindow;
  109.         mytags[3].ti_Data := Longint(Byte(true));
  110.     END ELSE begin
  111.         mytags[3].ti_Tag  := TAG_IGNORE;
  112.     END;
  113.     IF title <> nil THEN begin
  114.         mytags[4].ti_Tag  := ASLFR_TitleText;
  115.         mytags[4].ti_Data := Longint(title);
  116.     END ELSE begin
  117.         mytags[4].ti_Tag  := TAG_IGNORE;
  118.     END;
  119.     IF thepatt <> nil THEN begin
  120.         mytags[5].ti_Tag  := ASLFR_InitialPattern;
  121.         mytags[5].ti_Data := Longint(thepatt);
  122.     END ELSE begin
  123.         mytags[5].ti_Tag  := TAG_IGNORE;
  124.     END;
  125.     IF thepatt <> nil THEN begin
  126.         mytags[6].ti_Tag  := ASLFR_DoPatterns;
  127.         mytags[6].ti_Data := Longint(Byte(true));
  128.     END ELSE begin
  129.         mytags[6].ti_Tag  := TAG_IGNORE;
  130.     END;
  131.     mytags[7].ti_Tag  := TAG_DONE;
  132.  
  133.     fr := AllocAslRequest(ASL_FileRequest,@mytags);
  134.     IF fr <> NIL THEN BEGIN
  135.        IF AslRequest(fr,NIL) THEN BEGIN
  136.           IF (strlen(fr^.rf_Dir) >0) and (strlen(fr^.rf_File) > 0) THEN begin
  137.              strcopy(path,fr^.rf_Dir);
  138.              strcopy(fname,fr^.rf_File);
  139.              result := true;
  140.           END ELSE begin
  141.              result := false;
  142.           end;
  143.        END ELSE BEGIN
  144.           result := false;
  145.        END;
  146.        FreeAslRequest(fr);
  147.     END ELSE BEGIN
  148.        result := false;
  149.     END;
  150.     GetFileAsl := result;
  151. END;
  152.  
  153. FUNCTION GetFontAsl(title : PChar;VAR finfo : tFPCFontInfo; win : Pointer): Boolean;
  154.  
  155. VAR
  156.     fr : pFontRequester;
  157.     result : boolean;
  158.     mytags : ARRAY[0..14] OF tTagItem;
  159.  
  160. BEGIN
  161.  
  162.     result := false;
  163.     IF win <> nil THEN begin
  164.         mytags[0].ti_Tag  := ASLFR_Window;
  165.         mytags[0].ti_Data := Longint(win);
  166.     END ELSE begin
  167.         mytags[0].ti_Tag  := TAG_IGNORE;
  168.     END;
  169.     IF win <> nil THEN begin
  170.         mytags[1].ti_Tag  := ASLFR_SleepWindow;
  171.         mytags[1].ti_Data := Longint(Byte(true));
  172.     END ELSE begin
  173.         mytags[1].ti_Tag  := TAG_IGNORE;
  174.     END;
  175.     IF title <> nil THEN begin
  176.         mytags[2].ti_Tag  := ASLFR_TitleText;
  177.         mytags[2].ti_Data := Longint(title);
  178.     END ELSE begin
  179.         mytags[2].ti_Tag  := TAG_IGNORE;
  180.     END;
  181.     IF length(finfo.nfi_Name) > 0 THEN BEGIN
  182.         mytags[3].ti_Tag  := ASLFO_InitialName;
  183.         mytags[3].ti_Data := Longint(pas2c(finfo.nfi_Name));
  184.     END ELSE BEGIN
  185.         finfo.nfi_Name := 'topaz.font';
  186.         mytags[3].ti_Tag  := ASLFO_InitialName;
  187.         mytags[3].ti_Data := Longint(pas2c('topaz.font'));
  188.     END;
  189.     IF finfo.nfi_Size <= 4 THEN BEGIN
  190.         mytags[4].ti_Tag  := ASLFO_InitialSize;
  191.         mytags[4].ti_Data := 9;
  192.     END ELSE BEGIN
  193.         mytags[4].ti_Tag  := ASLFO_InitialSize;
  194.         mytags[4].ti_Data := Longint(finfo.nfi_Size);
  195.     END;
  196.     IF finfo.nfi_Style >= 0 THEN BEGIN
  197.         mytags[5].ti_Tag  := ASLFO_InitialStyle;
  198.         mytags[5].ti_Data := Longint(finfo.nfi_Style);
  199.     END ELSE BEGIN
  200.         mytags[5].ti_Tag  := TAG_IGNORE;
  201.     END;
  202.     IF finfo.nfi_Flags >= 0 THEN BEGIN
  203.         mytags[6].ti_Tag  := ASLFO_InitialFlags;
  204.         mytags[6].ti_Data := Longint(finfo.nfi_Flags);
  205.     END ELSE BEGIN
  206.         mytags[6].ti_Tag := TAG_IGNORE;
  207.     END;
  208.     IF finfo.nfi_BackPen >=0 THEN BEGIN
  209.         mytags[7].ti_Tag := ASLFO_InitialBackPen;
  210.         mytags[7].ti_Data := Longint(finfo.nfi_BackPen);
  211.     END ELSE BEGIN
  212.         mytags[7].ti_Tag := ASLFO_InitialBackPen;
  213.         mytags[7].ti_Data := 0;
  214.     END;
  215.     IF (finfo.nfi_FrontPen = 0) and (finfo.nfi_BackPen = 0) THEN BEGIN
  216.         mytags[8].ti_Tag := ASLFO_InitialFrontPen;
  217.         mytags[8].ti_Data := 1;
  218.     END ELSE BEGIN
  219.         mytags[8].ti_Tag := ASLFO_InitialFrontPen;
  220.         mytags[8].ti_Data := Longint(finfo.nfi_FrontPen);
  221.     END;
  222.     IF finfo.nfi_DrawMode >= 0 THEN BEGIN
  223.         mytags[9].ti_Tag := ASLFO_InitialDrawMode;
  224.         mytags[9].ti_Data := Longint(finfo.nfi_DrawMode);
  225.     END ELSE BEGIN
  226.         mytags[9].ti_Tag := ASLFO_InitialDrawMode;
  227.         mytags[9].ti_Data := 0;
  228.     END;
  229.     mytags[10].ti_Tag := ASLFO_DoFrontPen;
  230.     mytags[10].ti_Data := Longint(Byte(true));
  231.     mytags[11].ti_Tag := ASLFO_DoBackPen;
  232.     mytags[11].ti_Data := Longint(Byte(true));
  233.     mytags[12].ti_Tag := ASLFO_DoStyle;
  234.     mytags[12].ti_Data := Longint(Byte(true));
  235.     mytags[13].ti_Tag := ASLFO_DoDrawMode;
  236.     mytags[13].ti_Data := Longint(Byte(true));
  237.     mytags[14].ti_Tag := TAG_DONE;
  238.  
  239.     fr := AllocAslRequest(ASL_FontRequest,@mytags);
  240.     IF fr <> NIL THEN BEGIN
  241.          IF AslRequest(fr,NIL) THEN BEGIN
  242.               WITH finfo DO BEGIN
  243.                   nfi_Name := strpas(fr^.fo_Attr.ta_Name);
  244.                   nfi_Size       := fr^.fo_Attr.ta_YSize;
  245.                   nfi_Style      := fr^.fo_Attr.ta_Style;
  246.                   nfi_Flags      := fr^.fo_Attr.ta_Flags;
  247.                   nfi_FrontPen   := fr^.fo_FrontPen;
  248.                   nfi_BackPen    := fr^.fo_BackPen;
  249.                   nfi_DrawMode   := fr^.fo_DrawMode;
  250.              END;
  251.              result := true;
  252.          END ELSE BEGIN
  253.              result := false;
  254.          END;
  255.          FreeAslRequest(fr);
  256.     END ELSE BEGIN
  257.         result := false;
  258.     END;
  259.     GetFontAsl := result;
  260. END;
  261.  
  262. FUNCTION GetMultiAsl(title : PChar; VAR path : PChar;  VAR Thelist : pList; thepatt : PChar;win : Pointer): Boolean;
  263.  
  264. VAR
  265.     fr : pFileRequester;
  266.     result : Boolean;
  267.     mytags : ARRAY[0..7] OF tTagItem;
  268.     index : Longint;
  269.     tempnode : pFPCNode;
  270.  
  271. BEGIN
  272.         IF (strlen(path) > 0) and (FileType(path) = 2) THEN begin
  273.             mytags[0].ti_Tag  := ASLFR_InitialDrawer;
  274.             mytags[0].ti_Data := Longint(path);
  275.         END ELSE begin
  276.             mytags[0].ti_Tag  := ASLFR_InitialDrawer;
  277.             mytags[0].ti_Data := Longint(pas2c('Sys:'));
  278.         END;
  279.         IF win <> nil THEN begin
  280.             mytags[1].ti_Tag  := ASLFR_Window;
  281.             mytags[1].ti_Data := Longint(win);
  282.         END ELSE begin
  283.             mytags[1].ti_Tag  := TAG_IGNORE;
  284.         END;
  285.         IF win <> nil THEN begin
  286.             mytags[2].ti_Tag  := ASLFR_SleepWindow;
  287.             mytags[2].ti_Data := Longint(Byte(true));
  288.         END ELSE begin
  289.             mytags[2].ti_Tag  := TAG_IGNORE;
  290.         END;
  291.         IF title <> nil THEN begin
  292.             mytags[3].ti_Tag  := ASLFR_TitleText;
  293.             mytags[3].ti_Data := Longint(title);
  294.         END ELSE begin
  295.             mytags[3].ti_Tag  := TAG_IGNORE;
  296.         END;
  297.         IF thepatt <> nil THEN begin
  298.             mytags[4].ti_Tag  := ASLFR_InitialPattern;
  299.             mytags[4].ti_Data := Longint(thepatt);
  300.         END ELSE begin
  301.             mytags[4].ti_Tag  := TAG_IGNORE;
  302.         END;
  303.         IF thepatt <> nil THEN begin
  304.             mytags[5].ti_Tag  := ASLFR_DoPatterns;
  305.             mytags[5].ti_Data := Longint(Byte(true));
  306.         END ELSE begin
  307.             mytags[5].ti_Tag  := TAG_IGNORE;
  308.         END;
  309.         mytags[6].ti_Tag := ASLFR_DoMultiSelect;
  310.         mytags[6].ti_Data := Longint(Byte(true));
  311.         mytags[7].ti_Tag  := TAG_DONE;
  312.  
  313.         fr := AllocAslRequest(ASL_FileRequest,@mytags);
  314.         IF fr <> NIL THEN BEGIN
  315.              IF AslRequest(fr,NIL) THEN BEGIN
  316.                  IF (strlen(fr^.rf_Dir) >0) THEN begin
  317.                     strcopy(path,fr^.rf_Dir);
  318.                     result := true;
  319.                     FOR index := 1 to (fr^.rf_NumArgs) do begin
  320.                         tempnode := AddNewnode(TheList,fr^.rf_ArgList^[index].wa_Name);
  321.                     end;
  322.                  END ELSE begin
  323.                     result := false;
  324.                  end;
  325.              END ELSE BEGIN
  326.                  result := false;
  327.              END;
  328.              FreeAslRequest(fr);
  329.         END ELSE BEGIN
  330.             result := false;
  331.         END;
  332.         GetMultiAsl := result;
  333. END;
  334.  
  335. FUNCTION GetPathAsl(title : PChar; VAR path : PChar; win : Pointer): Boolean;
  336.  
  337. VAR
  338.     fr : pFileRequester;
  339.     result : Boolean;
  340.     mytags : ARRAY[0..5] OF tTagItem;
  341.  
  342. BEGIN
  343.     result := false;
  344.     IF (strlen(path) > 0) and (FileType(path) = 2) THEN begin
  345.         mytags[0].ti_Tag  := ASLFR_InitialDrawer;
  346.         mytags[0].ti_Data := Longint(path);
  347.     END ELSE begin
  348.         mytags[0].ti_Tag  := ASLFR_InitialDrawer;
  349.         mytags[0].ti_Data := Longint(pas2c('Sys:'));
  350.     END;
  351.     IF win <> nil THEN begin
  352.         mytags[1].ti_Tag  := ASLFR_Window;
  353.         mytags[1].ti_Data := Longint(win);
  354.     END ELSE begin
  355.         mytags[1].ti_Tag  := TAG_IGNORE;
  356.     END;
  357.     IF win <> nil THEN begin
  358.         mytags[2].ti_Tag  := ASLFR_SleepWindow;
  359.         mytags[2].ti_Data := Longint(Byte(true));
  360.     END ELSE begin
  361.         mytags[2].ti_Tag  := TAG_IGNORE;
  362.     END;
  363.     IF title <> nil THEN begin
  364.         mytags[3].ti_Tag  := ASLFR_TitleText;
  365.         mytags[3].ti_Data := Longint(title);
  366.     END ELSE begin
  367.         mytags[3].ti_Tag  := TAG_IGNORE;
  368.     END;
  369.     mytags[4].ti_Tag  := ASLFR_DrawersOnly;
  370.     mytags[4].ti_Data := Longint(Byte(true));
  371.     mytags[5].ti_Tag  := TAG_DONE;
  372.  
  373.     fr := AllocAslRequest(ASL_FileRequest,@mytags);
  374.     IF fr <> NIL THEN BEGIN
  375.          IF AslRequest(fr,NIL) THEN BEGIN
  376.              IF (strlen(fr^.rf_Dir) >0) THEN begin
  377.                 strcopy(path,fr^.rf_Dir);
  378.                 result := true;
  379.              END ELSE begin
  380.                 result := false;
  381.              end;
  382.          END ELSE BEGIN
  383.              result := false;
  384.          END;
  385.          FreeAslRequest(fr);
  386.     END ELSE BEGIN
  387.         result := false;
  388.     END;
  389.     GetPathAsl := result;
  390. END;
  391.  
  392. FUNCTION SaveFileAsl(title : PChar; VAR path, fname : PChar; win : Pointer): Boolean;
  393.  
  394. VAR
  395.     fr : pFileRequester;
  396.     result : Boolean;
  397.     mytags : ARRAY[0..6] OF tTagItem;
  398.  
  399. BEGIN
  400.     result := false;
  401.     IF strlen(fname) >0 THEN begin
  402.         mytags[0].ti_Tag  := ASLFR_InitialFile;
  403.         mytags[0].ti_Data := Longint(fname);
  404.     END ELSE begin
  405.         mytags[0].ti_Tag := TAG_IGNORE;
  406.     END;
  407.     IF (strlen(path) > 0) and (FileType(path) = 2) THEN begin
  408.         mytags[1].ti_Tag  := ASLFR_InitialDrawer;
  409.         mytags[1].ti_Data := Longint(path);
  410.     END ELSE begin
  411.         mytags[1].ti_Tag  := ASLFR_InitialDrawer;
  412.         mytags[1].ti_Data := Longint(pas2c('Sys:'));
  413.     END;
  414.     IF win <> nil THEN begin
  415.         mytags[2].ti_Tag  := ASLFR_Window;
  416.         mytags[2].ti_Data := Longint(win);
  417.     END ELSE begin
  418.         mytags[2].ti_Tag  := TAG_IGNORE;
  419.     END;
  420.     IF win <> nil THEN begin
  421.         mytags[3].ti_Tag  := ASLFR_SleepWindow;
  422.         mytags[3].ti_Data := Longint(Byte(true));
  423.     END ELSE begin
  424.         mytags[3].ti_Tag  := TAG_IGNORE;
  425.     END;
  426.     IF title <> nil THEN begin
  427.         mytags[4].ti_Tag  := ASLFR_TitleText;
  428.         mytags[4].ti_Data := Longint(title);
  429.     END ELSE begin
  430.         mytags[4].ti_Tag  := TAG_IGNORE;
  431.     END;
  432.     mytags[5].ti_Tag := ASLFR_DoSaveMode;
  433.     mytags[5].ti_Data := Longint(Byte(true));
  434.     mytags[6].ti_Tag  := TAG_DONE;
  435.  
  436.     fr := AllocAslRequest(ASL_FileRequest,@mytags);
  437.     IF fr <> NIL THEN BEGIN
  438.          IF AslRequest(fr,NIL) THEN BEGIN
  439.              IF (strlen(fr^.rf_Dir) >0) and (strlen(fr^.rf_File) > 0) THEN begin
  440.                 strcopy(path,fr^.rf_Dir);
  441.                 strcopy(fname,fr^.rf_File);
  442.                 result := true;
  443.              END ELSE begin
  444.                 result := false;
  445.              end;
  446.          END ELSE BEGIN
  447.              result := false;
  448.          END;
  449.          FreeAslRequest(fr);
  450.     END ELSE BEGIN
  451.         result := false;
  452.     END;
  453.     SaveFileAsl := result;
  454. END;
  455.  
  456. {$ifdef amiga_overlays}
  457. FUNCTION GetFileAsl(title : String; VAR path, fname : PChar; thepatt : PChar;win : Pointer): Boolean;
  458. begin
  459.     GetFileAsl := GetFileAsl(pas2c(title),path,fname,thepatt,win);
  460. end;
  461.  
  462. FUNCTION GetFileAsl(title : String; VAR path, fname : PChar; thepatt : String;win : Pointer): Boolean;
  463. begin
  464.     GetFileAsl := GetFileAsl(pas2c(title),path,fname,pas2c(thepatt),win);
  465. end;
  466.  
  467. FUNCTION GetFileAsl(title : PChar; VAR path, fname : PChar; thepatt : String;win : Pointer): Boolean;
  468. begin
  469.     GetFileAsl := GetFileAsl(title,path,fname,pas2c(thepatt),win);
  470. end;
  471.  
  472. FUNCTION GetFontAsl(title : String;VAR finfo : tFPCFontInfo; win : Pointer): Boolean;
  473. begin
  474.     GetFontAsl := GetFontAsl(pas2c(title),finfo,win);
  475. end;
  476.  
  477. FUNCTION GetMultiAsl(title : String; VAR path : PChar;  VAR Thelist : pList; thepatt : PChar;win : Pointer): Boolean;
  478. begin
  479.     GetMultiAsl := GetMultiAsl(pas2c(title),path,TheList,thepatt,win);
  480. end;
  481.  
  482. FUNCTION GetMultiAsl(title : String; VAR path : PChar;  VAR Thelist : pList; thepatt : String;win : Pointer): Boolean;
  483. begin
  484.     GetMultiAsl := GetMultiAsl(pas2c(title),path,TheList,pas2c(thepatt),win);
  485. end;
  486.  
  487. FUNCTION GetMultiAsl(title : PChar; VAR path : PChar;  VAR Thelist : pList; thepatt : String;win : Pointer): Boolean;
  488. begin
  489.     GetMultiAsl := GetMultiAsl(title,path,TheList,pas2c(thepatt),win);
  490. end;
  491.  
  492. FUNCTION GetPathAsl(title : String; VAR path : PChar; win : Pointer): Boolean;
  493. begin
  494.     GetPathAsl := GetPathAsl(pas2c(title),path,win);
  495. end;
  496.  
  497. FUNCTION SaveFileAsl(title : String; VAR path, fname : PChar; win : Pointer): Boolean;
  498. begin
  499.     SaveFileAsl := SaveFileAsl(pas2c(title),path,fname,win);
  500. end;
  501.  
  502. {$endif}
  503.  
  504. end.
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.